package dao;

import java.io.Serializable;
import java.util.List;

public interface IGenericDAO<T, ID extends Serializable> {

    T findById(ID id);

    List<T> findAll();

    T makePersistent(T entity);

    void makeTransient(T entity);

    T merge(T entity);
    
    void refresh(T entity);
    
    public void flush();
    
    public void commit();
    /*
     * 
     * Borra de la base la entidad pasada como parametro.
     * OJO!!!!, NO debe estar conectado con ninguna otra clase. Esto es porque puede 
     * eliminar de forma indeseada las clases linkeadas a esta entidad (o no,dependiendo de la 
     * configuracion por defecto).
     * Es por esto que es conveniente que la entidad este totalmente deslinkeada de todo. 
     */
    public void delete(T entity);
}
